import service


def get_dateset_list(page_num=1, page_size=100):
    """
    数据集列表
    :param page_num: 第n页 默认第1页
    :param page_size: 每页条数 默认100条
    :return: 数据集列表
    """
    ret = service.get_project_list(page_num, page_size)
    if not ret:
        print("获取数据集列表失败")
    return ret


def get_dataset(project_id, email, export_type=None, dist_path=None) -> (str, str):
    """
    获取标签数据集信息 返回 本地zip文件地址
    :param dist_path: str 目的地址 绝对地址 不填保存在 /tmp目录下
    :param project_id:  int 数据集id
    :param export_type:  str 数据类型 不填默认返回约定的数据格式 可选范围(VOC,JSON,BRUSH_TO_PNG,COCO,CSV)
    :param email: str 用户邮箱地址
    :return: 标签数据集zip文件地址 (标签数据集，源文件数据集)
    """
    data = {
        'label_dataset_path': '',
        'dataset_path': '',
    }
    label_dataset_path, image_path, extension = service.get_label_dataset(
        project_id, email, export_type=export_type, dist_path=dist_path
    )
    if not label_dataset_path:
        print('获取标签数据集失败')
        return {}
    if not image_path:
        image_path = service.get_dataset_path(project_id, email, dist_path=dist_path)
    data['label_dataset_path'] = label_dataset_path
    data['dataset_path'] = image_path
    return data


def upload_to_oss(file_path, dir_name, file_type='model') -> str:
    """
    上传文件到oss
    :param file_path: 要上传到oss的文件地址
    :param dir_name: oss文件夹路径名称 可以是唯一的或者是project_id为了和其他模型文件区分
    :param file_type: 文件类型 默认model 模型文件
    :return: oss文件地址
    """
    if oss_url := service.upload_to_oss(file_path, dir_name, file_type):
        return oss_url
    else:
        print('上传文件失败')
        return ''


if __name__ == '__main__':
    # print(get_dataset(project_id=47, export_type='CSV', email='caijie0918@163.com'))
    print(get_dataset(project_id=47, export_type=None, email='caijie0918@163.com'))
    # print(get_dateset_list())
    pass


